/**
题目:
给定一个排序链表，删除所有含有重复数字的节点，只保留原始链表中 没有重复出现 的数字。

示例 1:

输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:

输入: 1->1->1->2->3
输出: 2->3
思路: 哨兵 for if for
效果:
    执行用时：  0 ms, 在所有 Go 提交中击败了100.00%的用户
    内存消耗：3 MB, 在所有 Go 提交中击败了36.91%的用户
*/
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteDuplicates(head *ListNode) *ListNode {
    if head == nil || head.Next == nil{
        return head
    }
    dummy := &ListNode{Next:head}
    pre   := dummy
    for pre.Next != nil && pre.Next.Next != nil{
       if pre.Next.Val == pre.Next.Next.Val{
           tmp := pre.Next.Val
           for pre.Next != nil && pre.Next.Val == tmp{
               pre.Next = pre.Next.Next
           }
       }else{
           pre = pre.Next
       }
    }
    return dummy.Next
}